﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Collections;

namespace Jurassic_Island
{
    public class ENCaminos
    {
        private int id;
        private string origen;
        private string destino;
        private int coste;

        private CADCaminos cadCaminos = new CADCaminos();

        public ENCaminos()
        {
            id = 0;
            origen = "";
            destino = "";
            coste = 0;
        }

        public ENCaminos(int id_cam, string origen_cam, string destino_cam, int coste_cam)
        {
            id = id_cam;
            origen = origen_cam;
            destino = destino_cam;
            coste = coste_cam;
        }

        public ENCaminos(DataRow drCamino)
        {
            id = int.Parse(drCamino["ID"].ToString());
            origen = drCamino["Origen"].ToString();
            destino = drCamino["Destino"].ToString();
            coste = int.Parse(drCamino["Coste"].ToString());
        }

        public int ID
        {
            get { return id; }
            set { id = value; }
        }

        public string Origen
        {
            get { return origen; }
            set { origen = value; }
        }

        public string Destino
        {
            get { return destino; }
            set { destino = value; }
        }

        public int Coste
        {
            get { return coste; }
            set { coste = value; }
        }

        public DataSet ObtenerListaCaminos()
        {
            DataSet resultado = new DataSet();
            try
            {
                resultado = cadCaminos.ObtenerTablaCaminos();
            }
            catch (Exception ex)
            {
                throw (ex);
            }

            return resultado;
        }

        public DataSet ObtenerListaCaminosPorID(int id)
        {
            DataSet resultado = new DataSet();
            try
            {
                resultado = cadCaminos.ObtenerTablaCaminosPorID(id);
            }
            catch (Exception ex)
            {
                throw (ex);
            }

            return resultado;
        }

        public DataSet ObtenerListaCaminosPorOrigen(String origen)
        {
            DataSet resultado = new DataSet();
            try
            {
                resultado = cadCaminos.ObtenerTablaCaminosPorOrigen(origen);
            }
            catch (Exception ex)
            {
                throw (ex);
            }

            return resultado;
        }

        public DataSet ObtenerListaCaminosPorDestino(String destino)
        {
            DataSet resultado = new DataSet();
            try
            {
                resultado = cadCaminos.ObtenerTablaCaminosPorDestino(destino);
            }
            catch (Exception ex)
            {
                throw (ex);
            }

            return resultado;
        }

        public DataSet ObtenerListaCaminosPorOrigenDestino(String origen, String destino)
        {
            DataSet resultado = new DataSet();
            try
            {
                resultado = cadCaminos.ObtenerTablaCaminosPorOrigenDestino(origen,destino);
            }
            catch (Exception ex)
            {
                throw (ex);
            }

            return resultado;
        }

        public DataSet ObtenerListaCaminosPorLugar(String lugar)
        {
            DataSet resultado = new DataSet();
            try
            {
                resultado = cadCaminos.ObtenerTablaCaminosPorLugar(lugar);
            }
            catch (Exception ex)
            {
                throw (ex);
            }

            return resultado;
        }

        public bool ActualizarCaminos(DataSet dsCaminos)
        {
            bool resultado = false;

            try
            {
                resultado = cadCaminos.ActualizarCaminos(dsCaminos);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return resultado;
        }

        public bool EliminarCamino()
        {
            bool resultado = false;

            try
            {
                DataSet dsCaminos = cadCaminos.ObtenerTablaCaminos();

                dsCaminos.Tables["Caminos"].Rows.Find(id.ToString()).Delete();

                resultado = cadCaminos.ActualizarCaminos(dsCaminos);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return resultado;
        }

        public bool InsertarCamino(bool actualizar = false)
        {
            bool resultado = false;

            try
            {
                DataSet dsCaminos = cadCaminos.ObtenerTablaCaminos();

                DataRow dr;
                if (actualizar)
                {
                    //dr = dsCaminos.Tables["Caminos"].NewRow();
                    dr = dsCaminos.Tables["Caminos"].Rows.Find(id.ToString());
                    //dsCaminos.Tables["Caminos"].Rows.Find(id.ToString()).;
                }
                else
                {
                    dr = dsCaminos.Tables["Caminos"].NewRow();
                }
                //dsCaminos.Tables["Caminos"].Rows.Clear();
                    
                dr["Origen"] = origen.ToString();
                dr["Destino"] = destino.ToString();
                dr["Coste"] = coste.ToString();

                if (actualizar)
                    dr.EndEdit();
                else
                    dsCaminos.Tables["Caminos"].Rows.Add(dr);
                    

                resultado = cadCaminos.ActualizarCaminos(dsCaminos);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return resultado;
        }

    }
}
